#include "LED.h"

// uint8 RLedBuf;
// volatile uint16 TimeLedOn;
// const uint8 TAB_TYPE_SEL[] = {0x01,0x03,0x07};
Typedef_LED Led;

void    initLED(void)
{
    SET_OUT_H(P_LED0);
    SET_OUT_H(P_LED1);
    SET_OUT_H(P_LED2);
    SET_OUT_H(P_LED3);
    SET_OUT_H(P_LED4);

    Led.Tm = 0;
    Led.Buf = 0;
    Led.TmOn = 0;
    Led.TmPeriod = 0;
    Led.Loop = 0;
}

void    SetLed(uint8 led_buf,uint16 time_on,uint16 time_period,uint8 loop)
{
    Led.Buf = led_buf;
    Led.TmOn = time_on;
    Led.TmPeriod = time_period;
    Led.Loop = loop;
    Led.Tm = 0;
}

void    Led_Main(void)
{
    if(Led.Loop)
    {
        Led.Tm++;
        if(Led.Tm <= Led.TmOn)
        {
            if(Led.Buf & 0x01)  SET_OUT_L(P_LED0);
            else                SET_OUT_H(P_LED0);
            if(Led.Buf & 0x02)  SET_OUT_L(P_LED1);
            else                SET_OUT_H(P_LED1);
            if(Led.Buf & 0x04)  SET_OUT_L(P_LED2);
            else                SET_OUT_H(P_LED2);
            if(Led.Buf & 0x08)  SET_OUT_L(P_LED3);
            else                SET_OUT_H(P_LED3);
            if(Led.Buf & 0x10)  SET_OUT_L(P_LED4);
            else                SET_OUT_H(P_LED4);
        }
        else 
        {
            if(Led.Tm >= Led.TmPeriod)
            {
                Led.Loop--;
                Led.Tm = 0;
            }
            else
            {        
                SET_OUT_H(P_LED0);
                SET_OUT_H(P_LED1);
                SET_OUT_H(P_LED2);
                SET_OUT_H(P_LED3);
                SET_OUT_H(P_LED4);
            }
        }
    }
    else
    {
        Led.Tm = 0;
        SET_OUT_H(P_LED0);
        SET_OUT_H(P_LED1);
        SET_OUT_H(P_LED2);
        SET_OUT_H(P_LED3);
        SET_OUT_H(P_LED4);
    }
}


